using System;
using System.Collections.ObjectModel;
using System.Text.Json;
using CommunityToolkit.Mvvm.Input;
using mas.Models;
using mas.Views;

namespace mas.ViewModels;

public partial class HeaderWindowViewModel : ViewModelBase
{
    // 绑定到Header列表
    public ObservableCollection<HeaderData> Headers { get; }

    public HeaderWindowViewModel(ObservableCollection<HeaderData> headers)
    {
        Headers = headers ?? throw new ArgumentNullException(nameof(headers));
    }

    // 打开详情窗口命令  internal（同一程序集内可访问）
    [RelayCommand]
    internal void OpenDetailWindow(HeaderData header)
    {
        if (header == null) return;
        // 根据数据类型打开对应详情窗口（传递完整HeaderData）
        if (header.Image != null || !string.IsNullOrEmpty(header.Message))
        {
            if (header.Image != null)
            {
                var imageWindow = new ImageDetailWindow(new ImageDetailViewModel(header));
                imageWindow.Show();
            }
            else
            {
                var messageWindow = new MessageDetailWindow(new MessageDetailViewModel(header));
                messageWindow.Show();
            }
        }
    }

    // 添加：JSON格式化辅助方法
    private string FormatJson(string json)
    {
        try
        {
            // 尝试解析并格式化JSON
            var jsonElement = JsonDocument.Parse(json).RootElement;
            return JsonSerializer.Serialize(jsonElement, new JsonSerializerOptions { WriteIndented = true });
        }
        catch
        {
            // 解析失败时返回原始文本
            return $"JSON格式化失败：\n{json}";
        }
    }
    
    public void Dispose()
    {
        GC.SuppressFinalize(this);
    }
}